#ifndef __IO_ISERIALIZER_H__
#define __IO_ISERIALIZER_H__

#include <string>

class ISerializer
{
public:
	ISerializer(void){}
	virtual ~ISerializer(void){}
	
	virtual bool IsWriteMode() = 0;
	
	virtual void Serialize(bool & rBoolData) = 0;
	virtual void Serialize(char & rCharData) = 0;
	virtual void Serialize(unsigned char & rUCharData) = 0;
	virtual void Serialize(short & rShortData) = 0;
	virtual void Serialize(unsigned short & rUShortData) = 0;
	virtual void Serialize(int & rIntData) = 0;
	virtual void Serialize(unsigned int & rUIntData) = 0;
	virtual void Serialize(__int64 & rInt64Data) = 0;
	virtual void Serialize(unsigned __int64 & rUInt64Data) = 0;
	virtual void Serialize(float & rFloatData) = 0;
	virtual void Serialize(double & rDoubleData) = 0;

	virtual void Serialize(std::string & rStrData) = 0;
	virtual void Serialize(char * pData, int nSize) = 0;
};

#endif //__IO_ISERIALIZER_H__
